package com.deuwise.system.service;

import com.deuwise.system.entity.SysUser;
import com.deuwise.common.base.*;
import com.baomidou.mybatisplus.service.IService;
import com.deuwise.system.entity.TokenVO;

import java.util.List;

/**
 *@author deuwise
 *@date 2018-11-06 14:15:04
 * 用户 接口类
 **/
public interface SysUserService extends CoreService<SysUser>{

    /**
     * 登录名称查询信息
     * @param username
     * @return
     */
    SysUser queryByUserName(String username);


    /**
     * 登录名称查询总数
     * @param username
     * @param user
     * @return
     */
    Integer queryByUserName(String username,SysUser user);

    /**
     *申请token
     * @param uname
     * @param passwd
     * @return
     */
    TokenVO getToken(String uname, String passwd,String ...identities) ;

    /**
     *刷新token
     * @param uname
     * @param refreshToken
     * @return
     */
    TokenVO refreshToken(String uname, String refreshToken,String ...identities);

    /**
     * 检查token是否有效：未超时、未注销
     * @param token
     * @param isRefresh
     */
    void verifyToken(String token, boolean isRefresh,String ...identities);
    /**
     *注销token
     * @param token
     * @param refreshToken
     */
    void logoutToken(String token, String refreshToken);

    /**
     * 更新密码
     * @param userId
     * @param password
     * @param newPassword
     * @return
     */
    boolean updatePassword(String userId, String password, String newPassword);

    /**
     * 用户菜单
     * @param userId
     * @param appId
     * @return
     */
    List<String> queryAllMenuId(String userId,String appId);

    /**
     * 保存用户信息
     * @param sysUser
     * @return
     */
    boolean save(SysUser sysUser);

    /**
     * 更新用户信息
     * @param user
     */
    void update(SysUser user);
}